package com.jidu.service.impl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jidu.common.exception.ServiceException;
import com.jidu.common.utils.DateUtils;
import com.jidu.common.utils.SecurityUtils;
import com.jidu.domain.ClassTimeConfig;
import com.jidu.mapper.ClassTimeConfigMapper;
import com.jidu.service.IClassTimeConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

/**
 * 班级上课时间安排配置Service业务层处理
 * 
 * @author xuliang
 * @date 2024-07-25
 */
@Service
public class ClassTimeConfigServiceImpl  extends ServiceImpl<ClassTimeConfigMapper, ClassTimeConfig> implements IClassTimeConfigService
{
    @Autowired
    private ClassTimeConfigMapper classTimeConfigMapper;

    /**
     * 查询班级上课时间安排配置
     * 
     * @param id 班级上课时间安排配置主键
     * @return 班级上课时间安排配置
     */
    @Override
    public ClassTimeConfig selectClassTimeConfigById(Long id)
    {
        return classTimeConfigMapper.selectClassTimeConfigById(id);
    }

    /**
     * 查询班级上课时间安排配置列表
     * 
     * @param classTimeConfig 班级上课时间安排配置
     * @return 班级上课时间安排配置
     */
    @Override
    public List<ClassTimeConfig> selectClassTimeConfigList(ClassTimeConfig classTimeConfig)
    {
        return classTimeConfigMapper.selectClassTimeConfigList(classTimeConfig);
    }

    /**
     * 新增班级上课时间安排配置
     * 
     * @param classTimeConfig 班级上课时间安排配置
     * @return 结果
     */
    @Override
    public int insertClassTimeConfig(ClassTimeConfig classTimeConfig)
    {
//        List<ClassTimeConfig> list = this.lambdaQuery().eq(ClassTimeConfig::getDelFlag, "0")
//                .eq(ClassTimeConfig::getClassDate, classTimeConfig.getClassDate())
//                .eq(ClassTimeConfig::getClassId, classTimeConfig.getClassId()).list();
//        if (!CollectionUtils.isEmpty(list)){
//            for (ClassTimeConfig config : list) {
//                if (config.getStartTime().after(classTimeConfig.getStartTime()) && config.getEndTime().before(classTimeConfig.getEndTime())){
//                    throw new ServiceException("该班级该时间段已经配置过课程时间！请勿重新配置！");
//                }
//            }
//        }
        classTimeConfig.setCreateBy(SecurityUtils.getLoginUser().getUserId().toString());
        classTimeConfig.setCreateTime(DateUtils.getNowDate());
        classTimeConfig.setUpdateTime(DateUtils.getNowDate());
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(classTimeConfig.getClassDate());
        String s = getTime(classTimeConfig.getClassDate());
        classTimeConfig.setWeekday(s);

        return classTimeConfigMapper.insertClassTimeConfig(classTimeConfig);
    }

    private String getTime(Date date){
        Calendar instance = Calendar.getInstance();
        instance.setTime(date);
        int i = instance.get(Calendar.DAY_OF_WEEK) - 1;
        return getDataTime(i);
    }
    private String getDataTime(int i){
        String str = "";
        if (i==0){
            str = "星期天";
        }else if (i==1){
            str = "星期一";
        }else if (i==2){
            str = "星期二";
        }else if (i==3){
            str = "星期三";
        }else if (i==4){
            str = "星期四";
        }else if (i==5){
            str = "星期五";
        }else if (i==6){
            str = "星期六";
        }
        return str;
    }

    /**
     * 修改班级上课时间安排配置
     * 
     * @param classTimeConfig 班级上课时间安排配置
     * @return 结果
     */
    @Override
    public int updateClassTimeConfig(ClassTimeConfig classTimeConfig)
    {
        classTimeConfig.setUpdateTime(DateUtils.getNowDate());
        return classTimeConfigMapper.updateClassTimeConfig(classTimeConfig);
    }

    /**
     * 批量删除班级上课时间安排配置
     * 
     * @param ids 需要删除的班级上课时间安排配置主键
     * @return 结果
     */
    @Override
    public int deleteClassTimeConfigByIds(Long[] ids)
    {
        return classTimeConfigMapper.deleteClassTimeConfigByIds(ids);
    }

    /**
     * 删除班级上课时间安排配置信息
     * 
     * @param id 班级上课时间安排配置主键
     * @return 结果
     */
    @Override
    public int deleteClassTimeConfigById(Long id)
    {
        return classTimeConfigMapper.deleteClassTimeConfigById(id);
    }
}
